﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GestionRecaudos
{
    public partial class FrmCartulinaDevolucionesGenerar : Form
    {
        double tempCosto = 0;
        int tempCartulina = 0;
        int tempNuevaCartulina = 0;

        //--- Datos que se mostraran en la factura
        string
             nombreImpresora = string.Empty;

        public FrmCartulinaDevolucionesGenerar()
        {
            InitializeComponent();
        }

        private void FrmCartulinaDevolucionesGenerar_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'gestionRecaudosDataSet.spCartulina' Puede moverla o quitarla según sea necesario.
            this.spCartulinaTableAdapter.Fill(this.gestionRecaudosDataSet.spCartulina);

            //--- Cargo los Parametros
            nombreImpresora = Utils.get().getValorParametro("NombreImpresora");
            
            Utils.get().blanquearCampos(this);

            this.costoTextBox.Text = Utils.get().getValorParametro("ValorPorDefecto_DEVOLUCIONES");

            try
            {
                string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[Utils.get().getValorParametro("SeccionAppConfigGestionRecaudosConnectionString")].ConnectionString;
                DataTable table = new DataTable();
                table.TableName = this.tittle.Text;
                using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connectionString))
                {
                    conn.Open();
                    System.Data.SqlClient.SqlCommand command = conn.CreateCommand();
                    command.CommandType = CommandType.StoredProcedure;
                    command.CommandText = "[spCartulina]";
                    command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@OP", "ObtenerConsecutivoCartulina"));
                    table.Load(command.ExecuteReader());
                    conn.Close();
                }
                this.NuevaCartulinaTextBox.Text=table.Rows[0][0].ToString();
            }
            catch (Exception ex)
            {
                MessageException.show(ex);
            }
        }

        private void DevolverButton_Click(object sender, EventArgs e)
        {
            //--- Valido toda la informacion
            if (this.codCartulinaBuscadorAWIL.AWIL_Texto.Trim().Equals(string.Empty) || !this.codCartulinaBuscadorAWIL.AWIL_ValorCorrecto)
            {
                MessageBox.Show("Debe seleccionar una Cartulina Valida.");
                this.codCartulinaBuscadorAWIL.Focus();
                return;
            }
            if (!int.TryParse(this.codCartulinaBuscadorAWIL.AWIL_Texto.Trim(), out this.tempCartulina))
            {
                MessageBox.Show("La Cartulina que desea devolver no es valida.");
                this.NuevaCartulinaTextBox.Focus();
                return;
            }
            if (!double.TryParse(this.costoTextBox.Text.Trim(), out this.tempCosto))
            {
                MessageBox.Show("Digite un valor correcto.");
                this.costoTextBox.Focus();
                return;
            }
            if (!int.TryParse(this.NuevaCartulinaTextBox.Text.Trim(), out this.tempNuevaCartulina))
            {
                MessageBox.Show("La Nueva Cartulina no es valida.");
                this.NuevaCartulinaTextBox.Focus();
                return;
            }
            if (this.observacionesTextBox.Text.Trim().Equals(string.Empty))
            {
                MessageBox.Show("Debe indicar las observaciones de la Devolución.");
                this.observacionesTextBox.Focus();
                return;
            }
            if (!ImprimirTickets.get().impresoraExiste(this.nombreImpresora))
            {
                MessageBox.Show("La impresora \"" + this.nombreImpresora + "\" NO Existe. Verifique!");
                return;
            }

            try
            {
                //--- Guardo e Imprimo el Ticket
                string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[Utils.get().getValorParametro("SeccionAppConfigGestionRecaudosConnectionString")].ConnectionString;
                DataTable table = new DataTable();
                table.TableName = this.tittle.Text;
                using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connectionString))
                {
                    conn.Open();
                    System.Data.SqlClient.SqlCommand command = conn.CreateCommand();
                    command.CommandType = CommandType.StoredProcedure;
                    command.CommandText = "[spCartulinaDevoluciones]";
                    command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@OP", "GenerarDevolucion"));
                    command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CodCartulinaNueva", this.tempNuevaCartulina));
                    command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Valor", decimal.Parse(this.tempCosto.ToString())));
                    command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Observaciones", this.observacionesTextBox.Text.Trim()));
                    command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CodCartulina", tempCartulina));
                    table.Load(command.ExecuteReader());
                    conn.Close();
                }

                if (!table.Rows.Count.Equals(0))
                {
                    //--- Imprimir Copia Cliente
                    if (!ImprimirTickets.get().imprimirDevoluciones(table, "- CLIENTE -"))
                    {
                        return;
                    }
                    //--- Imprimir Copia Vendedor
                    if (!ImprimirTickets.get().imprimirDevoluciones(table, "- VENDEDOR -"))
                    {
                        return;
                    }
                }

                this.FrmCartulinaDevolucionesGenerar_Load(null, null);
            }
            catch (Exception ex)
            {
                MessageException.show(ex);
                return;
            }
        }

        //private bool Imprimir(DataTable datos, string TipoTicket)
        //{
        //    try
        //    {
        //        //--- Cabecera
        //        ticket = new Ticket();
        //        DateTime fecha;

        //        if (!DateTime.TryParse(datos.Rows[0]["FechaGrab"].ToString(), out fecha))
        //        {
        //            fecha = DateTime.Now;
        //        }

        //        //ticket.HeaderImage = Utils.get().fileToImage("D:\\.NET - PROYECTOS\\GestionRecaudos\\GestionRecaudos\\Images\\xls.bmp"); //esta propiedad no es obligatoria

        //        ticket.AddHeaderLine(this.nombreEmpresa, true, ticket.fontSize);
        //        ticket.AddHeaderLine(this.direccionEmpresa, false, ticket.fontSize);
        //        ticket.AddHeaderLine("N.I.T.: " + this.nitEmpresa, false, ticket.fontSize);
        //        ticket.AddHeaderLine(string.Empty, false, ticket.fontSize);
        //        ticket.AddHeaderLine("DEVOLUCION", true, ticket.fontSize);

        //        ticket.AddSubHeaderLine("Fecha/Hora:     " + fecha.ToShortDateString() + " " + fecha.ToShortTimeString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("Devolución No.: " + datos.Rows[0]["CodCartulinaDevolucion"].ToString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("Recaudo No.:    " + datos.Rows[0]["CodRecaudo"].ToString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("Placa:       " + datos.Rows[0]["CodPlaca"].ToString(), true, ticket.fontSize);
        //        ticket.AddSubHeaderLine(string.Empty, false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(new String('=', ticket.maxChar), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("N° Cartulina:      " + datos.Rows[0]["CodCartulina"].ToString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("NUEVA Cartulina:   " + datos.Rows[0]["CodCartulinaNueva"].ToString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("Precio Devolucion: $" + Utils.get().getFormatoMoneda(datos.Rows[0]["Valor"].ToString()), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(string.Empty, false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(new String('-', ticket.maxChar), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(string.Empty, false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(datos.Rows[0]["Observaciones"].ToString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(string.Empty, false, ticket.fontSize);
        //        ticket.AddSubHeaderLine("Vendedor: " + datos.Rows[0]["UserName"].ToString(), false, ticket.fontSize);
        //        ticket.AddSubHeaderLine(string.Empty, false, ticket.fontSize);

        //        ticket.AddSubFooterLine(this.telefonoEmpresa, false, ticket.fontSize);
        //        ticket.AddSubFooterLine(this.ciudadEmpresa, false, ticket.fontSize);
        //        ticket.AddSubFooterLine("-" + TipoTicket + "-", true, ticket.fontSize);

        //        ///---- Imprimir el Ticket!!!
        //        ticket.PrintTicket(this.nombreImpresora);
        //        return true;
        //    }
        //    catch (Exception ex)
        //    {
        //        MessageException.show(ex);
        //        return false;
        //    }
        //}
    }
}
